#include <stdio.h>

// 实现了一个循环
// 递归函数，调用自己
// 注意循环条件
// 自增参数
// 循环体
// 一层一层套上去，还要一层一层解掉,这就是递归
void test(int n)
{
    printf("n = %d\n", n);// 先序递归
    if (n < 10)//合理的终止条件
    {
        test(n + 1);
    }
    printf("n = %d\n", n);// 后序递归
}

// 形参和实参是在发生变化的
int age(int n)// n 是形参
{
    if (n == 1)
        return 10;//最后一个人是10岁
    return age(n - 1) + 2;// n - 1 是实参
}


// 十进制数转化为二进制数
void to_bin(unsigned int n)
{
    int i = n % 2;
    if (n >= 2)
        to_bin(n / 2);
    printf("%d", i);
}

// 十进制转化为char
char hex_char(unsigned int n)
{
    switch(n)
    {
    case 0:
        return '0';
    case 1:
        return '1';
    case 2:
        return '2';
    case 3:
        return '3';
    case 4:
        return '4';
    case 5:
        return '5';
    case 6:
        return '6';
    case 7:
        return '7';
    case 8:
        return '8';
    case 9:
        return '9';
    case 10:
        return 'a';
    case 11:
        return 'b';
    case 12:
        return 'c';
    case 13:
        return 'd';
    case 14:
        return 'e';
    case 15:
        return 'f';
    }
    return '0';
}
// 十进制转化为十六进制
void to_hex(unsigned int n)
{
    int i = n % 16;
    if (n >= 16)
        to_hex(n / 16);
    printf("%c", hex_char(i));

}
int main()
{
    //int a = 0;
    //test(a);
    //int b = 5;
    //printf("%d\n", age(b));
    int c = 1321321;
    //printf("请输入十进制数");
    scanf("%d", &c);
    printf("十进制%d转换为二进制=", c);
    to_bin(c);
    printf("\n");
    int d = 0;
    scanf("%d", &d);
    to_hex(d);
    return 0;
}
